To quantitatively examine the efficacy of vegetation restoration in drylands globally.
Study-level viz to document patterns in exclusions primarily and the relatie frequenices, at the study level, of major categories of evidence.
#study data####
library(tidyverse)
studies <- read_csv("data/studies.csv")
studies
## # A tibble: 278 x 18
## ID title technique data region exclude rationale observations
## <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 152 Shor~ seeding,~ expe~ Africa no <NA> <NA>
## 2 180 Rest~ chemical~ App.~ Africa no <NA> <NA>
## 3 229 Infl~ soil see~ fiel~ Africa no <NA> <NA>
## 4 230 Acti~ planting fiel~ Africa no <NA> <NA>
## 5 255 The ~ grazing ~ fiel~ Africa no <NA> <NA>
## 6 262 Reve~ seeding,~ eper~ Africa no <NA> <NA>
## 7 263 The ~ phytogen~ fiel~ Africa no <NA> <NA>
## 8 264 Eval~ seeding,~ fiel~ Africa no <NA> <NA>
## 9 271 Patc~ natural ~ fiel~ Africa no <NA> <NA>
## 10 4 Fact~ natural ~ App.~ Africa no <NA> <NA>
## # ... with 268 more rows, and 10 more variables: disturbance <chr>,
## # system <chr>, goal <chr>, intervention <chr>, paradigm <chr>,
## # grazing <chr>, hypothesis <chr>, soil <chr>, benchmark <chr>,
## # notes <chr>
#quick look at rationale needed
exclusions <- studies %>%
filter(exclude == "yes")
#quick look at studies with paradigms
evidence <- studies %>%
filter(exclude == "no")
#library(skimr)
#skim(evidence)
#study-level viz#####
#exclusions
ggplot(exclusions, aes(rationale, fill = region)) +
geom_bar() +
coord_flip() +
labs(x = "rational for exclusion", y = "frequency") +
scale_fill_brewer(palette = "Paired")
ggplot(evidence, aes(disturbance, fill = paradigm)) +
geom_bar(na.rm = TRUE) +
coord_flip() +
scale_fill_brewer(palette = "Paired") +
labs(y = "frequency")
ggplot(evidence, aes(region, fill = paradigm)) +
geom_bar(na.rm = TRUE) +
coord_flip() +
scale_fill_brewer(palette = "Paired") +
labs(y = "frequency")
ggplot(evidence, aes(data, fill = paradigm)) +
geom_bar(na.rm = TRUE) +
coord_flip() +
scale_fill_brewer(palette = "Paired") +
labs(y = "frequency")
ggplot(evidence, aes(system, fill = paradigm)) +
geom_bar(na.rm = TRUE) +
coord_flip() +
scale_fill_brewer(palette = "Paired") +
labs(y = "frequency")
ggplot(evidence, aes(goal, fill = paradigm)) +
geom_bar(na.rm = TRUE) +
coord_flip() +
scale_fill_brewer(palette = "Paired") +
labs(x = "outcome", y = "frequency")
#step 1 models####
#paradigm
derived.evidence <- evidence %>%
group_by(technique, data, region, disturbance, goal, paradigm) %>% summarise(n = n())
#active-passive split
m <- glm(n~paradigm, family = poisson, derived.evidence)
anova(m, test="Chisq")
## Analysis of Deviance Table
##
## Model: poisson, link: log
##
## Response: n
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 167 9.9147
## paradigm 1 0.045115 166 9.8696 0.8318
#region
m1 <- glm(n~paradigm*region, family = poisson, derived.evidence)
#m1
#summary(m1)
anova(m1, test="Chisq")
## Analysis of Deviance Table
##
## Model: poisson, link: log
##
## Response: n
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 167 9.9147
## paradigm 1 0.045115 166 9.8696 0.8318
## region 6 0.301367 160 9.5682 0.9995
## paradigm:region 6 0.213627 154 9.3546 0.9998
#outcome
m2 <- glm(n~paradigm*goal, family = poisson, derived.evidence)
#m1
#summary(m1)
anova(m2, test="Chisq")
## Analysis of Deviance Table
##
## Model: poisson, link: log
##
## Response: n
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 167 9.9147
## paradigm 1 0.045115 166 9.8696 0.8318
## goal 6 0.240941 160 9.6287 0.9997
## paradigm:goal 4 0.301480 156 9.3272 0.9897
#even split between active and passive evidence by all key categories
A summary of sort process using PRISMA.
library(PRISMAstatement)
prisma(found = 1504,
found_other = 5,
no_dupes = 1039,
screened = 1039,
screen_exclusions = 861,
full_text = 178,
full_text_exclusions = 101,
qualitative = 77,
quantitative = 66,
width = 800, height = 800)
Check data and calculate necessary measures.
#all data
#data <- read_csv("data/data.csv")
#data <- data %>%
#mutate(lrr = log(mean.t/mean.c), rii = ((mean.t-mean.c)/(mean.t + mean.c)), var.es = ((sd.t^2/n.t*mean.t^2) + (sd.c^2/n.c*mean.c^2)))
#other effect size estimates
#library(compute.es)
#data <- data %>%
#mutate(d=mes(mean.t, mean.c, sd.t, sd.c, n.t, n.c, level = 95, #cer = 0.2, dig = 2, , id = ID, data = data))
#check metafor
#all data
paperdata <- read_csv("data/paper_data.csv")
paperdata <- paperdata %>%
mutate(lrr = log(mean.t/mean.c), rii = ((mean.t-mean.c)/(mean.t + mean.c)), var.es = ((sd.t^2/n.t*mean.t^2) + (sd.c^2/n.c*mean.c^2)))
Explore summary level data of all data. Explore aggregation levels that support the most reasonable data structure and minimize non-independence issues.
#evidence map####
require(maps)
world<-map_data("world")
map<-ggplot() + geom_polygon(data=world, fill="gray50", aes(x=long, y=lat, group=group))
map + geom_point(data=paperdata, aes(x=long, y=lat)) +
labs(x = "longitude", y = "latitude") #render a literal map, i.e. evidence map, of where we study the niche in deserts globally
#add in levels and color code points on map####
map + geom_point(data=paperdata, aes(x=long, y=lat, color = paradigm)) +
scale_color_brewer(palette = "Paired") +
labs(x = "longitude", y = "latitude", color = "")
#aggregation####
se <- function(x){
sd(x)/sqrt(length(x))
}
data.simple <- paperdata %>%
group_by(study.ID, paradigm, technique, measure.success) %>%
summarise(n = n(), mean.lrr = mean(lrr), mean.rii = mean(rii), mean.var = mean(var.es))
main.data <- paperdata %>%
group_by(study.ID, paradigm, intervention, outcome) %>%
summarise(n = n(), mean.lrr = mean(lrr), mean.rii = mean(rii), mean.var = mean(var.es))
#EDA data####
simple.data <- paperdata %>% group_by(study.ID, paradigm, technique, measure.success) %>% summarise(mean.rii = mean(rii), error = se(rii))
simple.data <- na.omit(simple.data)
parad.data <- paperdata %>% group_by(study.ID, paradigm) %>% summarise(mean.rii = mean(rii), error = se(rii))
parad.data <- na.omit(parad.data)
tech.data <- paperdata %>% group_by(study.ID, technique) %>% summarise(mean.rii = mean(rii), error = se(rii))
tech.data <- na.omit(tech.data)
success.data <- paperdata %>% group_by(study.ID, measure.success) %>% summarise(mean.rii = mean(rii), error = se(rii))
success.data <- na.omit(success.data)
#active
active <- paperdata %>%
filter(paradigm == "active")
#viz for aggregation####
disturbance.data <- paperdata %>% group_by(study.ID,disturbance, paradigm) %>% count()
disturbance.data2 <- disturbance.data %>% group_by(disturbance,paradigm) %>% count()
ggplot(na.omit(disturbance.data2), aes(disturbance,nn, fill=paradigm))+ geom_bar(stat = "identity") + coord_flip(ylim=0:44) + scale_fill_brewer(palette = "Blues")
ggplot(na.omit(data.simple), aes(technique, n, fill = paradigm)) +
geom_bar(stat = "identity") +
coord_flip() +
scale_fill_brewer(palette = "Paired")
ggplot(na.omit(data.simple), aes(measure.success, n, fill = paradigm)) +
geom_bar(stat = "identity") +
coord_flip() +
scale_fill_brewer(palette = "Paired")
#better
ggplot(main.data, aes(intervention, n, fill = paradigm)) +
geom_bar(stat = "identity") +
coord_flip() +
scale_fill_brewer(palette = "Paired") +
labs(fill = "")
ggplot(main.data, aes(outcome, n, fill = paradigm)) +
geom_bar(stat = "identity") +
coord_flip() +
scale_fill_brewer(palette = "Paired") +
labs(fill = "")
Exploratory data analyses to understand data and QA/QC using Rii.
Meta and conventional statistical models to explore relative efficacy.
Step 5. Synthesis stats
#p-value meta
library(metap)
#all data for metas but cleaned for na's
mdata <- paperdata %>%
filter(paradigm == "active") %>%
filter(!is.na(lrr)) %>%
filter(!is.na(var.es)) %>%
filter(!is.na(n.t)) %>%
filter(!is.na(p)) %>%
filter(!is.na(intervention)) %>%
filter(is.finite(lrr))
#aggregated data for metas var estimated with central tendency
#note - could also bootstrap mean variance here instead of arithematic mean
simple.mdata <- mdata %>%
group_by(intervention) %>%
summarise(lrr = mean(lrr), var.es = mean(var.es), n = mean(n.t))
simple.mdata.2 <- mdata %>%
group_by(intervention, outcome) %>%
summarise(lrr = mean(lrr), var.es = mean(var.es), n = mean(n.t))
simple.mdata.var <- mdata %>%
group_by(intervention) %>%
summarise(lrr = mean(lrr), var.es = se(var.es), n = mean(n.t))
simple.mdata2.var <- mdata %>%
group_by(intervention, outcome) %>%
summarise(lrr = mean(lrr), var.es = se(var.es), n = mean(n.t))
#metas with p-values####
schweder(mdata$p)
sumz(p, data = mdata)
## sumz = 41.12464 p = 0
mdata %>%
split(.$intervention) %>%
purrr::map(~sumz(.$p))
## $`carbon amendment`
## sumz = 12.80103 p = 8.089988e-38
##
## $`mycorrhizal inoculation`
## sumz = 10.1732 p = 1.305983e-24
##
## $nutrients
## sumz = 9.350793 p = 4.349654e-21
##
## $planting
## sumz = 23.27758 p = 3.739763e-120
##
## $seeding
## sumz = 23.82834 p = 8.493511e-126
##
## $vegetation
## sumz = 6.86889 p = 3.235173e-12
##
## $`water addition`
## sumz = 13.53169 p = 5.082856e-42
sumlog(mdata$p)
## chisq = 4002.878 with df = 1438 p = 4.380539e-240
#metas with meta package on effect size measures####
library(meta)
#all data non-aggregated
m <- metagen(lrr, var.es, studlab = ID, byvar = intervention, data = mdata)
summary(m)
## Number of studies combined: k = 665
##
## 95%-CI z p-value
## Fixed effect model -0.0063 [-0.0063; -0.0063] -40590292.09 0
## Random effects model 0.2266 [ 0.1715; 0.2816] 8.07 < 0.0001
##
## Quantifying heterogeneity:
## tau^2 = 0.1848; H = 21775022.93 [21775022.02; 21775023.84]; I^2 = 100.0% [100.0%; 100.0%]
##
## Quantifying residual heterogeneity:
## H = 21874075.56 [21874074.65; 21874076.48]; I^2 = 100.0% [100.0%; 100.0%]
##
## Test of heterogeneity:
## Q d.f. p-value
## 314836678046932224.00 664 0
##
## Results for subgroups (fixed effect model):
## k 95%-CI
## intervention = planting 208 -0.0063 [-0.0063; -0.0063]
## intervention = carbon amendment 70 -1.2791 [-1.2845; -1.2738]
## intervention = vegetation 27 0.0008 [ 0.0008; 0.0008]
## intervention = nutrients 48 -0.0223 [-0.0717; 0.0272]
## intervention = seeding 207 -0.0210 [-0.0210; -0.0210]
## intervention = mycorrhizal inoculation 30 0.7241 [ 0.7239; 0.7243]
## intervention = water addition 75 0.0037 [ 0.0025; 0.0049]
## Q tau^2
## intervention = planting 314836590812084800.00 0.1848
## intervention = carbon amendment 1618.90 0.0305
## intervention = vegetation 61345019250.51 0.1134
## intervention = nutrients 10.53 0
## intervention = seeding 17441046877.02 0.0098
## intervention = mycorrhizal inoculation 2078953.52 0.0464
## intervention = water addition 109.93 <0.0001
## I^2
## intervention = planting 100.0%
## intervention = carbon amendment 95.7%
## intervention = vegetation 100.0%
## intervention = nutrients 0.0%
## intervention = seeding 100.0%
## intervention = mycorrhizal inoculation 100.0%
## intervention = water addition 32.7%
##
## Test for subgroup differences (fixed effect model):
## Q d.f. p-value
## Between groups 8446700545.63 6 0
## Within groups 314836669600231616.00 658 0
##
## Results for subgroups (random effects model):
## k 95%-CI
## intervention = planting 208 0.4004 [ 0.3256; 0.4753]
## intervention = carbon amendment 70 -1.4672 [-1.6147; -1.3198]
## intervention = vegetation 27 0.3598 [ 0.0506; 0.6689]
## intervention = nutrients 48 -0.0223 [-0.0717; 0.0272]
## intervention = seeding 207 -0.1585 [-0.1862; -0.1308]
## intervention = mycorrhizal inoculation 30 0.8426 [ 0.7533; 0.9319]
## intervention = water addition 75 0.0073 [-0.0012; 0.0158]
## Q tau^2
## intervention = planting 314836590812084800.00 0.1848
## intervention = carbon amendment 1618.90 0.0305
## intervention = vegetation 61345019250.51 0.1134
## intervention = nutrients 10.53 0
## intervention = seeding 17441046877.02 0.0098
## intervention = mycorrhizal inoculation 2078953.52 0.0464
## intervention = water addition 109.93 <0.0001
## I^2
## intervention = planting 100.0%
## intervention = carbon amendment 95.7%
## intervention = vegetation 100.0%
## intervention = nutrients 0.0%
## intervention = seeding 100.0%
## intervention = mycorrhizal inoculation 100.0%
## intervention = water addition 32.7%
##
## Test for subgroup differences (random effects model):
## Q d.f. p-value
## Between groups 966.83 6 < 0.0001
##
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2
funnel(m)
#metabias(m)
#forest(m, sortvar = intervention)
m.study <- metagen(lrr, var.es, studlab = study.ID, byvar = intervention, data = mdata)
summary(m.study)
## Number of studies combined: k = 665
##
## 95%-CI z p-value
## Fixed effect model -0.0063 [-0.0063; -0.0063] -40590292.09 0
## Random effects model 0.2266 [ 0.1715; 0.2816] 8.07 < 0.0001
##
## Quantifying heterogeneity:
## tau^2 = 0.1848; H = 21775022.93 [21775022.02; 21775023.84]; I^2 = 100.0% [100.0%; 100.0%]
##
## Quantifying residual heterogeneity:
## H = 21874075.56 [21874074.65; 21874076.48]; I^2 = 100.0% [100.0%; 100.0%]
##
## Test of heterogeneity:
## Q d.f. p-value
## 314836678046932224.00 664 0
##
## Results for subgroups (fixed effect model):
## k 95%-CI
## intervention = planting 208 -0.0063 [-0.0063; -0.0063]
## intervention = carbon amendment 70 -1.2791 [-1.2845; -1.2738]
## intervention = vegetation 27 0.0008 [ 0.0008; 0.0008]
## intervention = nutrients 48 -0.0223 [-0.0717; 0.0272]
## intervention = seeding 207 -0.0210 [-0.0210; -0.0210]
## intervention = mycorrhizal inoculation 30 0.7241 [ 0.7239; 0.7243]
## intervention = water addition 75 0.0037 [ 0.0025; 0.0049]
## Q tau^2
## intervention = planting 314836590812084800.00 0.1848
## intervention = carbon amendment 1618.90 0.0305
## intervention = vegetation 61345019250.51 0.1134
## intervention = nutrients 10.53 0
## intervention = seeding 17441046877.02 0.0098
## intervention = mycorrhizal inoculation 2078953.52 0.0464
## intervention = water addition 109.93 <0.0001
## I^2
## intervention = planting 100.0%
## intervention = carbon amendment 95.7%
## intervention = vegetation 100.0%
## intervention = nutrients 0.0%
## intervention = seeding 100.0%
## intervention = mycorrhizal inoculation 100.0%
## intervention = water addition 32.7%
##
## Test for subgroup differences (fixed effect model):
## Q d.f. p-value
## Between groups 8446700545.63 6 0
## Within groups 314836669600231616.00 658 0
##
## Results for subgroups (random effects model):
## k 95%-CI
## intervention = planting 208 0.4004 [ 0.3256; 0.4753]
## intervention = carbon amendment 70 -1.4672 [-1.6147; -1.3198]
## intervention = vegetation 27 0.3598 [ 0.0506; 0.6689]
## intervention = nutrients 48 -0.0223 [-0.0717; 0.0272]
## intervention = seeding 207 -0.1585 [-0.1862; -0.1308]
## intervention = mycorrhizal inoculation 30 0.8426 [ 0.7533; 0.9319]
## intervention = water addition 75 0.0073 [-0.0012; 0.0158]
## Q tau^2
## intervention = planting 314836590812084800.00 0.1848
## intervention = carbon amendment 1618.90 0.0305
## intervention = vegetation 61345019250.51 0.1134
## intervention = nutrients 10.53 0
## intervention = seeding 17441046877.02 0.0098
## intervention = mycorrhizal inoculation 2078953.52 0.0464
## intervention = water addition 109.93 <0.0001
## I^2
## intervention = planting 100.0%
## intervention = carbon amendment 95.7%
## intervention = vegetation 100.0%
## intervention = nutrients 0.0%
## intervention = seeding 100.0%
## intervention = mycorrhizal inoculation 100.0%
## intervention = water addition 32.7%
##
## Test for subgroup differences (random effects model):
## Q d.f. p-value
## Between groups 966.83 6 < 0.0001
##
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2
#funnel(m)
#metabias(m)
#forest(m, sortvar = intervention)
#aggregated data
m1 <- metagen(lrr, var.es, studlab = intervention, data = simple.mdata)
summary(m1)
## Number of studies combined: k = 7
##
## 95%-CI z p-value
## Fixed effect model 0.7569 [0.2559; 1.2579] 2.96 0.0031
## Random effects model 0.7569 [0.2559; 1.2579] 2.96 0.0031
##
## Quantifying heterogeneity:
## tau^2 = 0; H = 1.00 [1.00; 1.00]; I^2 = 0.0% [0.0%; 0.0%]
##
## Test of heterogeneity:
## Q d.f. p-value
## 0.00 6 1.0000
##
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2
funnel(m1)
metabias(m1)
#forest(m, sortvar = intervention)
#different var estimate
m2 <- metagen(lrr, var.es, studlab = intervention, data = simple.mdata.var)
summary(m2)
## Number of studies combined: k = 7
##
## 95%-CI z p-value
## Fixed effect model 0.7569 [0.5221; 0.9917] 6.32 < 0.0001
## Random effects model 0.7569 [0.5221; 0.9917] 6.32 < 0.0001
##
## Quantifying heterogeneity:
## tau^2 = 0; H = 1.00 [1.00; 1.00]; I^2 = 0.0% [0.0%; 0.0%]
##
## Test of heterogeneity:
## Q d.f. p-value
## 0.00 6 1.0000
##
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2
funnel(m2)
metabias(m2)
#forest(m, sortvar = intervention)
m3 <- metagen(lrr, var.es, studlab = intervention, byvar = outcome, data = simple.mdata.2)
summary(m3)
## Number of studies combined: k = 14
##
## 95%-CI z p-value
## Fixed effect model 0.7569 [0.2559; 1.2579] 2.96 0.0031
## Random effects model 0.7569 [0.2559; 1.2579] 2.96 0.0031
##
## Quantifying heterogeneity:
## tau^2 = 0; H = 1.00 [1.00; 1.00]; I^2 = 0.0% [0.0%; 0.0%]
##
## Quantifying residual heterogeneity:
## H = 1.00 [1.00; 1.00]; I^2 = 0.0% [0.0%; 0.0%]
##
## Test of heterogeneity:
## Q d.f. p-value
## 0.00 13 1.0000
##
## Results for subgroups (fixed effect model):
## k
## outcome = vegetation and habitat 5 -0.3732
## outcome = native species 4 0.7569
## outcome = soil quality 3 -0.2582
## outcome = invertebrate community 1 0.3101
## outcome = vegetation 1 0.9542
## 95%-CI Q
## outcome = vegetation and habitat [ -102.3869; 101.6405] 0.00
## outcome = native species [ 0.2559; 1.2579] 0.00
## outcome = soil quality [ -2495.7200; 2495.2037] 0.00
## outcome = invertebrate community [-87021594.0357; 87021594.6560] 0.00
## outcome = vegetation [ -1387092.6104; 1387094.5187] 0.00
## tau^2 I^2
## outcome = vegetation and habitat 0 0.0%
## outcome = native species 0 0.0%
## outcome = soil quality 0 0.0%
## outcome = invertebrate community -- --
## outcome = vegetation -- --
##
## Test for subgroup differences (fixed effect model):
## Q d.f. p-value
## Between groups 0.00 4 1.0000
## Within groups 0.00 9 1.0000
##
## Results for subgroups (random effects model):
## k
## outcome = vegetation and habitat 5 -0.3732
## outcome = native species 4 0.7569
## outcome = soil quality 3 -0.2582
## outcome = invertebrate community 1 0.3101
## outcome = vegetation 1 0.9542
## 95%-CI Q
## outcome = vegetation and habitat [ -102.3869; 101.6405] 0.00
## outcome = native species [ 0.2559; 1.2579] 0.00
## outcome = soil quality [ -2495.7200; 2495.2037] 0.00
## outcome = invertebrate community [-87021594.0357; 87021594.6560] 0.00
## outcome = vegetation [ -1387092.6104; 1387094.5187] 0.00
## tau^2 I^2
## outcome = vegetation and habitat 0 0.0%
## outcome = native species 0 0.0%
## outcome = soil quality 0 0.0%
## outcome = invertebrate community -- --
## outcome = vegetation -- --
##
## Test for subgroup differences (random effects model):
## Q d.f. p-value
## Between groups 0.00 4 1.0000
##
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2
#funnel(m)
radial(m3)
#metabias(m2)
#forest(m, sortvar = intervention)
m4 <- metagen(lrr, var.es, studlab = intervention, byvar = outcome, data = simple.mdata2.var)
summary(m4)
## Number of studies combined: k = 14
##
## 95%-CI z p-value
## Fixed effect model 0.7569 [0.5221; 0.9917] 6.32 < 0.0001
## Random effects model 0.7569 [0.5221; 0.9917] 6.32 < 0.0001
##
## Quantifying heterogeneity:
## tau^2 = 0; H = 1.00 [1.00; 1.00]; I^2 = 0.0% [0.0%; 0.0%]
##
## Quantifying residual heterogeneity:
## H = 1.00 [1.00; 1.00]; I^2 = 0.0% [0.0%; 0.0%]
##
## Test of heterogeneity:
## Q d.f. p-value
## 0.00 13 1.0000
##
## Results for subgroups (fixed effect model):
## k
## outcome = vegetation and habitat 5 -0.3732
## outcome = native species 4 0.7569
## outcome = soil quality 3 -0.2567
## outcome = invertebrate community 1 0.3101
## outcome = vegetation 1 0.9542
## 95%-CI Q
## outcome = vegetation and habitat [ -56.3098; 55.5634] 0.00
## outcome = native species [ 0.5221; 0.9917] 0.00
## outcome = soil quality [ -1355.4681; 1354.9548] 0.00
## outcome = invertebrate community [-73938869.3024; 73938869.9227] 0.00
## outcome = vegetation [ -784939.0735; 784940.9818] 0.00
## tau^2 I^2
## outcome = vegetation and habitat 0 0.0%
## outcome = native species 0 0.0%
## outcome = soil quality 0 0.0%
## outcome = invertebrate community -- --
## outcome = vegetation -- --
##
## Test for subgroup differences (fixed effect model):
## Q d.f. p-value
## Between groups 0.00 4 1.0000
## Within groups 0.00 9 1.0000
##
## Results for subgroups (random effects model):
## k
## outcome = vegetation and habitat 5 -0.3732
## outcome = native species 4 0.7569
## outcome = soil quality 3 -0.2567
## outcome = invertebrate community 1 0.3101
## outcome = vegetation 1 0.9542
## 95%-CI Q
## outcome = vegetation and habitat [ -56.3098; 55.5634] 0.00
## outcome = native species [ 0.5221; 0.9917] 0.00
## outcome = soil quality [ -1355.4681; 1354.9548] 0.00
## outcome = invertebrate community [-73938869.3024; 73938869.9227] 0.00
## outcome = vegetation [ -784939.0735; 784940.9818] 0.00
## tau^2 I^2
## outcome = vegetation and habitat 0 0.0%
## outcome = native species 0 0.0%
## outcome = soil quality 0 0.0%
## outcome = invertebrate community -- --
## outcome = vegetation -- --
##
## Test for subgroup differences (random effects model):
## Q d.f. p-value
## Between groups 0.00 4 1.0000
##
## Details on meta-analytical method:
## - Inverse variance method
## - DerSimonian-Laird estimator for tau^2
#funnel(m)
radial(m4)
#metabias(m2)
#forest(m, sortvar = intervention)
forest(m1, sortvar = intervention, fontsize = 10, xlim = c(-2, 2))
forest(m2, sortvar = intervention, fontsize = 10, xlim = c(-2, 2))
forest(m3, sortvar = intervention, fontsize = 10, xlim = c(-2, 2))
forest(m4, sortvar = intervention, fontsize = 10, xlim = c(-2, 2))
#t-tests for lrr diff from 0
mdata %>%
split(.$intervention) %>%
purrr::map(~sumz(.$lrr))
## $`carbon amendment`
## sumz = 2.031395 p = 0.02110749
##
## $`mycorrhizal inoculation`
## sumz = -0.4709042 p = 0.6811454
##
## $nutrients
## sumz = 6.392107 p = 8.180747e-11
##
## $planting
## sumz = 2.984449 p = 0.001420447
##
## $seeding
## sumz = 7.26085 p = 1.923328e-13
##
## $vegetation
## sumz = 4.163645 p = 1.566035e-05
##
## $`water addition`
## sumz = 1.52389 p = 0.06376814
#effect sizes plots
#need better ci estimates
ggplot(simple.mdata, aes(intervention, lrr)) +
ylim(c(-2,2)) +
geom_point(position = position_dodge(width = 0.5)) +
labs(x = "", y = "lrr") +
coord_flip() +
geom_errorbar(aes(ymin=lrr-var.es, ymax=lrr+var.es), width=.05, position = position_dodge(width = 0.5)) +
geom_hline(yintercept = 0, colour="grey", linetype = "longdash")
ggplot(simple.mdata.2, aes(intervention, lrr, color = outcome)) +
ylim(c(-2,2)) +
geom_point(position = position_dodge(width = 0.5)) +
labs(x = "", y = "lrr", color = "") +
coord_flip() +
geom_errorbar(aes(ymin=lrr-var.es, ymax=lrr+var.es), width=.05, position = position_dodge(width = 0.5)) +
geom_hline(yintercept = 0, colour="grey", linetype = "longdash")
ggplot(mdata, aes(lrr, color = intervention)) +
geom_freqpoly(binwidth = 0.5, size = 2) +
xlim(c(-10, 10)) +
labs(x = "lrr", y = "frequency", color = "") +
geom_vline(xintercept = 0, colour="grey", linetype = "longdash") +
scale_color_brewer()
ggplot(mdata, aes(lrr, fill = intervention)) +
geom_dotplot(binwidth = 1) +
xlim(c(-10, 10)) +
labs(x = "lrr", y = "frequency", fill = "") +
geom_vline(xintercept = 0, colour="grey", linetype = "longdash") +
scale_fill_brewer()